The present disclosure relates generally to information handling systems, and more particularly to scrubbing memory used in information handling systems.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems such as, for example, server devices, desktop computing devices, laptop computing devices, and/or other computing devices known in the art, typically include a Basic Input/Output System (BIOS) that is provided by non-volatile firmware that is configured to perform hardware initialization during a booting process for the computing device, as well as provide runtime services for an operating system and applications executed by the computing device. Conventionally, during the booting process, the BIOS may perform memory scrubbing operations (e.g., Address Range Scrub (ARS) according to the Advanced Configuration and Power Interface (ACPI) specification) on persistent memory such as, for example, non-volatile dual in-line memory modules (NVDIMMs) included in the computing device. The memory scrubbing operation provides for the checking of memory locations in the persistent memory that are experiencing errors, and attempts to correct those errors. Upon completion of the memory scrubbing operations, the BIOS reports memory locations that are uncorrectable using the memory scrubbing operations to the operating system of the computing device, and the operating system and software applications in the computing device will then not use those memory locations while the computing device is in a runtime environment. For example, a BIOS configured according to the ACPI specification may provide a memory root device notification to the operating system, which causes the operating system to call a Device Specific Method (DSM) to query for a memory scrub error record. If the memory scrub error record includes any memory locations that are experiencing an uncorrectable error, the operating system will exclude the memory locations from use.
Many operating system boot loaders wait until the memory scrubbing operations complete before the operating system boot loader loads the operating system, which ensures that the operating system and the software applications will not use the memory locations that are experiencing uncorrectable errors. However, the memory scrubbing operations may take a relatively long time to complete. For example, performing the memory scrubbing operations on one 16 GB NVDIMM-N may take up to 5 minutes to complete. Thus, a computing device that has 12 16 GB NVDIMM-Ns may require an hour to complete the memory scrubbing operations before the computing device enters the runtime environment. In order decrease the time required for the computing device to enter the runtime environment, some operating systems do not wait for the memory scrubbing operations to complete, and instead enter the runtime environment before the memory scrubbing operations have completed. However, while those memory scrubbing operations are being completed, the operating systems then run the risk of using memory locations in the persistent memory that have correctable errors and/or uncorrectable errors, which may result in lost data or reduced system performance.
Accordingly, it would be desirable to provide an improved memory scrub system.